package paquetes.manager;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.*;

import paquetes.interfazRemota.PuntoDeVentaController;
import paquetes.negocioVO.FacturaVO;
import paquetes.negocioVO.MedioPagoFactura;
import paquetes.negocioVO.PedidoVO;


public class AdministradorFacturas
{	
	private PuntoDeVentaController oficinaVentas;
	private static AdministradorFacturas instancia;
	
	public static AdministradorFacturas getInstancia()
	{
		if(instancia==null)
			instancia = new AdministradorFacturas();
		return instancia;
	}
	
	private AdministradorFacturas()
	{
		try {
			oficinaVentas = (PuntoDeVentaController) Naming.lookup("//localhost/TPO_Paquetes_PuntoDeVenta");
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (NotBoundException e) {
			e.printStackTrace();
		}
	}
	
	public FacturaVO confirmarPedido(PedidoVO p) {
            try {
				return oficinaVentas.confirmarPedido(p);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		
	}
	
	public FacturaVO buscarFactura(long f) {
            try {
				return oficinaVentas.buscarFactura(f);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		
		
	}

	public void abonarFactura(FacturaVO f,MedioPagoFactura m) {
            try {
				oficinaVentas.abonarFactura(f,m);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

	public List<FacturaVO> getFacturas() {
            try {
				return oficinaVentas.getFacturas();
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
	
	}
	
	public PedidoVO buscarPedido(long id){
            try {
				return oficinaVentas.buscarPedido(id);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return null;
		
		
	}

	public void generarFactura(PedidoVO p) {
            try {
				oficinaVentas.generarFactura(p);
			} catch (RemoteException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
    
}
